return {
  "nvim-lualine/lualine.nvim",
  enabled = true,
  dependencies = {
    "nvim-tree/nvim-web-devicons",
    "chrisgrieser/nvim-recorder",
  },
  config = function()
    local lualine = require "lualine"
    local lazy_status = require "lazy.status" -- to configure lazy pending updates count

    vim.opt.showmode = false

    -- local colors = {
    --   blue = "#65D1FF",
    --   green = "#3EFFDC",
    --   violet = "#FF61EF",
    --   yellow = "#FFDA7B",
    --   red = "#FF4A4A",
    --   fg = "#c3ccdc",
    --   bg = "#112638",
    --   inactive_bg = "#2c3043",
    -- }
    -- local my_lualine_theme = {
    --   normal = {
    --     a = { bg = colors.blue, fg = colors.bg, gui = "bold" },
    --     b = { bg = colors.bg, fg = colors.fg },
    --     c = { bg = colors.bg, fg = colors.fg },
    --   },
    --   insert = {
    --     a = { bg = colors.green, fg = colors.bg, gui = "bold" },
    --     b = { bg = colors.bg, fg = colors.fg },
    --     c = { bg = colors.bg, fg = colors.fg },
    --   },
    --   visual = {
    --     a = { bg = colors.violet, fg = colors.bg, gui = "bold" },
    --     b = { bg = colors.bg, fg = colors.fg },
    --     c = { bg = colors.bg, fg = colors.fg },
    --   },
    --   command = {
    --     a = { bg = colors.yellow, fg = colors.bg, gui = "bold" },
    --     b = { bg = colors.bg, fg = colors.fg },
    --     c = { bg = colors.bg, fg = colors.fg },
    --   },
    --   replace = {
    --     a = { bg = colors.red, fg = colors.bg, gui = "bold" },
    --     b = { bg = colors.bg, fg = colors.fg },
    --     c = { bg = colors.bg, fg = colors.fg },
    --   },
    --   inactive = {
    --     a = { bg = colors.inactive_bg, fg = colors.semilightgray, gui = "bold" },
    --     b = { bg = colors.inactive_bg, fg = colors.semilightgray },
    --     c = { bg = colors.inactive_bg, fg = colors.semilightgray },
    --   },
    -- }
    -- -- configure lualine with modified theme
    -- lualine.setup {
    --   options = {
    --     theme = my_lualine_theme,
    --   },
    --   extensions = { "nvim-tree" },
    --   sections = {
    --     lualine_x = {
    --       {
    --         lazy_status.updates,
    --         cond = lazy_status.has_updates,
    --         color = { fg = "#ff9e64" },
    --       },
    --       { "encoding" },
    --       { "fileformat" },
    --       { "filetype" },
    --     },
    --   },
    -- }

    local icons = {
      git = {
        LineAdded = " ",
        LineModified = " ",
        LineRemoved = " ",
        FileDeleted = " ",
        FileIgnored = "◌",
        FileRenamed = " ",
        FileStaged = "S",
        FileUnmerged = "",
        FileUnstaged = "",
        FileUntracked = "U",
        Diff = " ",
        Repo = " ",
        Octoface = " ",
        Branch = "",
      },
    }
    local diff = {
      "diff",
      colored = true,
      symbols = { added = icons.git.LineAdded, modified = icons.git.LineModified, removed = icons.git.LineRemoved }, -- Changes the symbols used by the diff.
    }


    local function show_macro_recording()
      local recording_register = vim.fn.reg_recording()
      if recording_register == "" then
        return ""
      else
        return "󰑋 " .. recording_register
      end
    end

    lualine.setup {
      options = {
        -- theme = 'tokyonight', -- "gruvbox"
        theme = "auto",
        icons_enabled = true,
        component_separators = { left = "", right = "" },
        section_separators = { left = "", right = "" },
        disabled_filetypes = {
          statusline = {},
          winbar = {},
        },
        ignore_focus = { "NvimTree" },
        always_divide_middle = true,
        globalstatus = false,
        refresh = {
          statusline = 1000,
          tabline = 1000,
          winbar = 1000,
        },
      },
      sections = {
        lualine_a = { "mode" },
        -- lualine_b = {'branch', 'diff', 'diagnostics'},
        -- lualine_b = {{ 'filename', path = 3 }},
        -- lualine_b = {{ 'filename', path = 3 }, 'branch', 'diff', 'diagnostics'},
        -- lualine_b = { { 'filename', path = 3 }, 'branch', 'diagnostics' },
        lualine_b = { "filename", "branch", diff },
        -- lualine_c = {'filename'},
        lualine_c = { "diagnostics" },
        -- lualine_x = {'encoding', 'fileformat', 'filetype'},

        lualine_x = {
          -- { require("recorder").recordingStatus },
          -- { require("recorder").displaySlots },
          {
            show_macro_recording,
            color = { fg = "#333333", bg = "#fd676f" },
            separator = { left = "", right = "" },
            padding = 0,
          },
          {
            lazy_status.updates,
            cond = lazy_status.has_updates,
            color = { fg = "#ff9e64" },
          },
          { "encoding" },
          { "fileformat" },
          { "filetype" },
        },
        lualine_y = {
          { "progress" },
        },
        lualine_z = {
          { "location" },
        },

        -- lualine_a = { {"branch", icon =""} },
        -- lualine_b = { diff },
        -- lualine_c = { "diagnostics" },
        -- lualine_x = { copilot },
        -- lualine_y = { "filetype" },
        -- lualine_z = { "progress" },
        --  ----------
        -- lualine_a = { "mode" },
        -- lualine_b = { "branch" },
        -- lualine_c = { diff },
        -- lualine_x = { "diagnostics", copilot },
        -- lualine_y = { "filetype" },
        -- lualine_z = { "progress" },
      },
      inactive_sections = {
        lualine_a = {},
        lualine_b = {},
        lualine_c = { "filename" },
        lualine_x = { "location" },
        lualine_y = {},
        lualine_z = {},
      },
      -- tabline = {
      --   lualine_a = {},
      --   lualine_b = {},
      --   lualine_c = {},
      --   lualine_x = {},
      --   lualine_y = {},
      --   lualine_z = {},
      -- },
      tabline = {},
      winbar = {
        lualine_a = {
          {
            "filename",
            separator = { left = "", right = "" },
          },
        },
        lualine_x = {
          "lsp_status",
        }
      },
      inactive_winbar = {},
      extensions = { "nvim-tree", "quickfix", "man", "fugitive" },
    }
  end,
}
